Testing basic functions of Motion Clouds

  |   Source   |   Minimap   |   Note: Just click on any IPython input cell to see the output.

Motion Clouds: raw principles

In [1]:
def show_video(filename):
    from IPython.display import display, Image, HTML
    from base64 import b64encode
    video = open(mc.figpath + filename + mc.vext, "rb").read()
    video_encoded = b64encode(video)
    video_tag = '<video controls  autoplay="autoplay" loop="loop" width=350px src="data:video/x-m4v;base64,{0}">'.format(video_encoded)
    display(HTML(data=video_tag))
  Click me!

Introduction

Motion Clouds are synthesized textures which aim at having similar characteristics as natural images but with controlled parameters. There are many ways to achieve these results and this notebook aims at showing that different procedures from different communities (neurioscience, modelling, computer vision, ...) may produce similar results.

Using mixtures of images

Using Fourier ("official Motion Clouds")

In [2]:
import MotionClouds as mc

fx, fy, ft = mc.get_grids(mc.N_X, mc.N_Y, mc.N_frame)
  Click me!

Using ARMA processes

In [3]:
import scipy.misc
lena = scipy.misc.lena() * 1.
lena -= lena.mean()
lena /= lena.std()
print lena.shape
  Click me!
(512, 512)

In [4]:
imshow(lena, cmap=cm.gray)
  Click me!
Out[4]:
<matplotlib.image.AxesImage at 0x112255fd0>
In [5]:
def noise(image=lena):
    for axis in [0, 1]:
        image = np.roll(image, np.random.randint(image.shape[axis]), axis=axis)
    return image
  Click me!
In [6]:
imshow(noise(), cmap=cm.gray)
  Click me!
Out[6]:
<matplotlib.image.AxesImage at 0x112693f50>
In [7]:
imshow(noise(), cmap=cm.gray)
  Click me!
Out[7]:
<matplotlib.image.AxesImage at 0x11426a150>

Now, we define the ARMA process as an averaging process with a certain time constant \(\tau=30.\) (in frames).

In [8]:
def ARMA(image, tau=30.):
    image = (1 - 1/tau)* image + 1/tau * noise()
    return image
  Click me!

initializing

In [9]:
image = ARMA(lena)
imshow(image, cmap=cm.gray)
  Click me!
Out[9]:
<matplotlib.image.AxesImage at 0x11471bcd0>
In [10]:
for _ in range(1000): image = ARMA(image)
imshow(image, cmap=cm.gray)
  Click me!
Out[10]:
<matplotlib.image.AxesImage at 0x114bd9e50>
In [11]:
for _ in range(1000): image = ARMA(image)
imshow(image, cmap=cm.gray)
  Click me!
Out[11]:
<matplotlib.image.AxesImage at 0x11528f390>
In [12]:
for _ in range(1000): image = ARMA(image)
imshow(image, cmap=cm.gray)
  Click me!
Out[12]:
<matplotlib.image.AxesImage at 0x1152c1890>
In [15]:
N_frame = 1024
z = np.zeros((lena.shape[0], lena.shape[1], N_frame))
z[:, :, 0] = image
for i_frame in range(1, N_frame): 
    z[:, :, i_frame] = ARMA(z[:, :, i_frame-1])
mc.anim_save(.5 + .5*z, filename='results/arma')
  Click me!
calculating   0% |                                             | ETA:  --:--:--
calculating   1% |                                              | ETA:  0:01:02
calculating   2% |                                              | ETA:  0:01:00
calculating   3% |#                                             | ETA:  0:00:58
calculating   4% |#                                             | ETA:  0:00:57
calculating   5% |##                                            | ETA:  0:00:57
calculating   6% |##                                            | ETA:  0:00:56
calculating   7% |###                                           | ETA:  0:00:55
calculating   8% |###                                           | ETA:  0:00:55
calculating   9% |####                                          | ETA:  0:00:54
calculating  10% |####                                          | ETA:  0:00:54
calculating  11% |#####                                         | ETA:  0:00:53
calculating  12% |#####                                         | ETA:  0:00:52
calculating  13% |######                                        | ETA:  0:00:51
calculating  15% |######                                        | ETA:  0:00:51
calculating  16% |#######                                       | ETA:  0:00:50
calculating  17% |#######                                       | ETA:  0:00:49
calculating  18% |########                                      | ETA:  0:00:49
calculating  19% |########                                      | ETA:  0:00:48
calculating  20% |#########                                     | ETA:  0:00:47
calculating  21% |#########                                     | ETA:  0:00:47
calculating  22% |##########                                    | ETA:  0:00:46
calculating  23% |##########                                    | ETA:  0:00:45
calculating  24% |###########                                   | ETA:  0:00:44
calculating  25% |###########                                   | ETA:  0:00:44
calculating  26% |############                                  | ETA:  0:00:43
calculating  27% |############                                  | ETA:  0:00:42
calculating  29% |#############                                 | ETA:  0:00:42
calculating  30% |#############                                 | ETA:  0:00:41
calculating  31% |##############                                | ETA:  0:00:41
calculating  32% |##############                                | ETA:  0:00:40
calculating  33% |###############                               | ETA:  0:00:39
calculating  34% |###############                               | ETA:  0:00:39
calculating  35% |################                              | ETA:  0:00:38
calculating  36% |################                              | ETA:  0:00:37
calculating  37% |#################                             | ETA:  0:00:37
calculating  38% |#################                             | ETA:  0:00:36
calculating  39% |##################                            | ETA:  0:00:35
calculating  40% |##################                            | ETA:  0:00:35
calculating  41% |###################                           | ETA:  0:00:34
calculating  42% |###################                           | ETA:  0:00:33
calculating  44% |####################                          | ETA:  0:00:33
calculating  45% |####################                          | ETA:  0:00:32
calculating  46% |#####################                         | ETA:  0:00:31
calculating  47% |#####################                         | ETA:  0:00:31
calculating  48% |######################                        | ETA:  0:00:30
calculating  49% |######################                        | ETA:  0:00:30
calculating  50% |#######################                       | ETA:  0:00:29
calculating  51% |#######################                       | ETA:  0:00:28
calculating  52% |########################                      | ETA:  0:00:28
calculating  53% |########################                      | ETA:  0:00:27
calculating  54% |#########################                     | ETA:  0:00:26
calculating  55% |#########################                     | ETA:  0:00:26
calculating  56% |##########################                    | ETA:  0:00:25
calculating  58% |##########################                    | ETA:  0:00:25
calculating  59% |###########################                   | ETA:  0:00:24
calculating  60% |###########################                   | ETA:  0:00:23
calculating  61% |############################                  | ETA:  0:00:23
calculating  62% |############################                  | ETA:  0:00:22
calculating  63% |#############################                 | ETA:  0:00:21
calculating  64% |#############################                 | ETA:  0:00:21
calculating  65% |##############################                | ETA:  0:00:20
calculating  66% |##############################                | ETA:  0:00:19
calculating  67% |###############################               | ETA:  0:00:19
calculating  68% |###############################               | ETA:  0:00:18
calculating  69% |################################              | ETA:  0:00:17
calculating  70% |################################              | ETA:  0:00:17
calculating  71% |#################################             | ETA:  0:00:16
calculating  73% |#################################             | ETA:  0:00:16
calculating  74% |##################################            | ETA:  0:00:15
calculating  75% |##################################            | ETA:  0:00:14
calculating  76% |###################################           | ETA:  0:00:14
calculating  77% |###################################           | ETA:  0:00:13
calculating  78% |####################################          | ETA:  0:00:12
calculating  79% |####################################          | ETA:  0:00:12
calculating  80% |#####################################         | ETA:  0:00:11
calculating  81% |#####################################         | ETA:  0:00:10
calculating  82% |######################################        | ETA:  0:00:10
calculating  83% |######################################        | ETA:  0:00:09
calculating  84% |#######################################       | ETA:  0:00:08
calculating  85% |#######################################       | ETA:  0:00:08
calculating  87% |########################################      | ETA:  0:00:07
calculating  88% |########################################      | ETA:  0:00:07
calculating  89% |#########################################     | ETA:  0:00:06
calculating  90% |#########################################     | ETA:  0:00:05
calculating  91% |##########################################    | ETA:  0:00:05
calculating  92% |##########################################    | ETA:  0:00:04
calculating  93% |##########################################    | ETA:  0:00:03
calculating  94% |###########################################   | ETA:  0:00:03
calculating  95% |###########################################   | ETA:  0:00:02
calculating  96% |############################################  | ETA:  0:00:01
calculating  97% |############################################  | ETA:  0:00:01
calculating  98% |############################################# | ETA:  0:00:00
calculating  99% |############################################# | ETA:  0:00:00
Saving sequence results/arma.mp4

calculating 100% |##############################################| Time: 0:00:59

In [16]:
show_video(filename='arma')
  Click me!
In [14]:
  Click me!
Comments powered by Disqus
Contents © 2014 Laurent Perrinet - Powered by Nikola Creative Commons License BY-NC-SA